# 定义一个汽车类 汽车的品牌 汽车价格 汽车的排量
# 汽车 能播放电影
# 构建函数 析构函数 属性 多媒体功能mediaPlay gongfu panda
class Car:
    # 构造函数
    def __init__(self,brand,price,displacement,licheng):
        self.brand = brand
        self.price = price
        self.displacement = displacement
        self.__licheng = licheng
        print("对象被创建")
    # 析构函数
    def __del__(self):
        print("对象被销毁")
    # 定义一个成员函数
    def mediaPlay(self):
        print(self.brand+"能播放功夫熊猫")
    # 定义一个私有方法
    def __say(self):
        print("Audi")
c = Car("奥迪","40","3.0T",5)
# 访问其中的方法
c.mediaPlay()
print(c.brand)
# 私有属性外部无法访问 私有函数也不允许访问
# print(c.__licheng)
# c.__say()
print("创建完成")
# 定义一个电脑类 属性 类型 显卡 CPU 内存 硬盘
# 电脑能运行游戏 刺客信条 霍格沃斯之谜 黑神话悟空
# 电脑私有属性 __network broken
class Computer:
    def __init__(self,type,GPU,CPU,RAM,disk):
        self.type = type
        self.GPU = GPU
        self.CPU = CPU
        self.RAM = RAM
        self.disk = disk
        self.__net = 'broken'
    def canRun(self,game_name):
        if game_name in ['刺客信条','霍格沃斯之谜','黑神话悟空']:
            print("可以玩"+game_name)
        else:
            print("不支持"+game_name)

pc = Computer("笔记本电脑","4090TI","13th i9","16G","2TB")
pc.canRun("刺客信条")
# 成员方法 类方法 类属性 静态方法
class Person:
    # 类属性
    walking = "直立行走"
    # 构造函数 在对象新建的时候调用
    def __init__(self,name,age):
        self.name = name
        self.age = age
    # 析构函数 在对象删除的时候调用
    def __del__(self):
        print("调用了析构函数")
    # 成员方法
    def introduce(self):
        print(f"我的名字是{self.name}") # this
        print(f"我的年龄为{self.age}")
    @classmethod
    def set_walk(cls,method):
        cls.walking = method
    @staticmethod
    def get_walk():
        return Person.walking
p1 = Person("张红",20)
p1.introduce()
# 类属性使用类名调用
print(Person.walking)
# 使用对象调用 调用的是一个副本值
print(p1.walking)
p1.walking = "游泳"
print(p1.walking)
print(Person.walking)
# 调用类方法
Person.set_walk("飞行")
print(Person.walking)
# 调用静态方法
print(Person.get_walk())
print(p1.get_walk())
print(p1.walking)
# 定义一个工人类（Worker）属性 姓名 年龄 工号 工作内容
# 成员方法 介绍自己的信息和工作内容
class Worker:
    # 公司名称 类属性
    company_name = "alibaba"
    def __init__(self,name,age,gonghao,gznr):
        self.name = name
        self.age = age
        self.gonghao = gonghao
        self.gznr = gznr
    def  __del__(self):
        print('调用了析构函数')
    def introduce(self):
        print(f"我的姓名为{self.name}")
        print(f"我的年龄为{self.age}")
        print(f"我的工号为{self.gonghao}")
        print(f"我的工作内容为{self.gznr}")
    # 定义一个类方法 设置公司名称
    @classmethod
    def set_company_name(cls,company_name):
        cls.company_name = company_name
    # 定义一个静态方法读取公司名称
    @staticmethod
    def get_company_name():
        return Worker.company_name
w = Worker("张三","50","181","除灰")
w.introduce()
# 在外边调用
print(Worker.get_company_name())
Worker.set_company_name("tencent")
print(Worker.get_company_name())
# 继承 方法的重写 父类方法调用 多态







